/**
 */
package org.autosar.schema.r4.impl;

import org.autosar.schema.r4.R4Factory;
import org.autosar.schema.r4.R4Package;

import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;

import org.eclipse.emf.ecore.impl.EPackageImpl;

import org.eclipse.emf.ecore.xml.type.XMLTypePackage;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Package</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class R4PackageImpl extends EPackageImpl implements R4Package {
	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass dataelementstypeEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass dataelementtypeEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass eventgroupstypeEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass eventgrouptypeEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass eventstypeEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass eventtypeEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass someipserviceinstancetypeEClass = null;

	/**
	 * Creates an instance of the model <b>Package</b>, registered with
	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
	 * package URI value.
	 * <p>Note: the correct way to create the package is via the static
	 * factory method {@link #init init()}, which also performs
	 * initialization of the package, or returns the registered package,
	 * if one already exists.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.emf.ecore.EPackage.Registry
	 * @see org.autosar.schema.r4.R4Package#eNS_URI
	 * @see #init()
	 * @generated
	 */
	private R4PackageImpl() {
		super(eNS_URI, R4Factory.eINSTANCE);
	}
	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private static boolean isInited = false;

	/**
	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
	 *
	 * <p>This method is used to initialize {@link R4Package#eINSTANCE} when that field is accessed.
	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #eNS_URI
	 * @see #createPackageContents()
	 * @see #initializePackageContents()
	 * @generated
	 */
	public static R4Package init() {
		if (isInited) return (R4Package)EPackage.Registry.INSTANCE.getEPackage(R4Package.eNS_URI);

		// Obtain or create and register package
		Object registeredR4Package = EPackage.Registry.INSTANCE.get(eNS_URI);
		R4PackageImpl theR4Package = registeredR4Package instanceof R4PackageImpl ? (R4PackageImpl)registeredR4Package : new R4PackageImpl();

		isInited = true;

		// Initialize simple dependencies
		XMLTypePackage.eINSTANCE.eClass();

		// Create package meta-data objects
		theR4Package.createPackageContents();

		// Initialize created meta-data
		theR4Package.initializePackageContents();

		// Mark meta-data to indicate it can't be changed
		theR4Package.freeze();

		// Update the registry and return the package
		EPackage.Registry.INSTANCE.put(R4Package.eNS_URI, theR4Package);
		return theR4Package;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getDATAELEMENTSTYPE() {
		return dataelementstypeEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getDATAELEMENTSTYPE_DATAELEMENT() {
		return (EReference)dataelementstypeEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getDATAELEMENTTYPE() {
		return dataelementtypeEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getDATAELEMENTTYPE_SHORTNAME() {
		return (EAttribute)dataelementtypeEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getDATAELEMENTTYPE_DATAID() {
		return (EAttribute)dataelementtypeEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getDATAELEMENTTYPE_DATATYPE() {
		return (EAttribute)dataelementtypeEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getEVENTGROUPSTYPE() {
		return eventgroupstypeEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getEVENTGROUPSTYPE_EVENTGROUP() {
		return (EReference)eventgroupstypeEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getEVENTGROUPTYPE() {
		return eventgrouptypeEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getEVENTGROUPTYPE_SHORTNAME() {
		return (EAttribute)eventgrouptypeEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getEVENTGROUPTYPE_EVENTGROUPID() {
		return (EAttribute)eventgrouptypeEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getEVENTGROUPTYPE_EVENTS() {
		return (EReference)eventgrouptypeEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getEVENTSTYPE() {
		return eventstypeEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getEVENTSTYPE_EVENT() {
		return (EReference)eventstypeEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getEVENTTYPE() {
		return eventtypeEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getEVENTTYPE_SHORTNAME() {
		return (EAttribute)eventtypeEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getEVENTTYPE_EVENTID() {
		return (EAttribute)eventtypeEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getEVENTTYPE_DATAELEMENTS() {
		return (EReference)eventtypeEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getSOMEIPSERVICEINSTANCETYPE() {
		return someipserviceinstancetypeEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getSOMEIPSERVICEINSTANCETYPE_SHORTNAME() {
		return (EAttribute)someipserviceinstancetypeEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getSOMEIPSERVICEINSTANCETYPE_CATEGORY() {
		return (EAttribute)someipserviceinstancetypeEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getSOMEIPSERVICEINSTANCETYPE_DESC() {
		return (EAttribute)someipserviceinstancetypeEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getSOMEIPSERVICEINSTANCETYPE_SERVICEID() {
		return (EAttribute)someipserviceinstancetypeEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getSOMEIPSERVICEINSTANCETYPE_INSTANCEID() {
		return (EAttribute)someipserviceinstancetypeEClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getSOMEIPSERVICEINSTANCETYPE_PROTOCOLVERSION() {
		return (EAttribute)someipserviceinstancetypeEClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getSOMEIPSERVICEINSTANCETYPE_INTERFACEVERSION() {
		return (EAttribute)someipserviceinstancetypeEClass.getEStructuralFeatures().get(6);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getSOMEIPSERVICEINSTANCETYPE_SERVICEINTERFACETYPE() {
		return (EAttribute)someipserviceinstancetypeEClass.getEStructuralFeatures().get(7);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getSOMEIPSERVICEINSTANCETYPE_EVENTGROUPS() {
		return (EReference)someipserviceinstancetypeEClass.getEStructuralFeatures().get(8);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getSOMEIPSERVICEINSTANCETYPE_ECUCQUERY() {
		return (EAttribute)someipserviceinstancetypeEClass.getEStructuralFeatures().get(9);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public R4Factory getR4Factory() {
		return (R4Factory)getEFactoryInstance();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private boolean isCreated = false;

	/**
	 * Creates the meta-model objects for the package.  This method is
	 * guarded to have no affect on any invocation but its first.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void createPackageContents() {
		if (isCreated) return;
		isCreated = true;

		// Create classes and their features
		dataelementstypeEClass = createEClass(DATAELEMENTSTYPE);
		createEReference(dataelementstypeEClass, DATAELEMENTSTYPE__DATAELEMENT);

		dataelementtypeEClass = createEClass(DATAELEMENTTYPE);
		createEAttribute(dataelementtypeEClass, DATAELEMENTTYPE__SHORTNAME);
		createEAttribute(dataelementtypeEClass, DATAELEMENTTYPE__DATAID);
		createEAttribute(dataelementtypeEClass, DATAELEMENTTYPE__DATATYPE);

		eventgroupstypeEClass = createEClass(EVENTGROUPSTYPE);
		createEReference(eventgroupstypeEClass, EVENTGROUPSTYPE__EVENTGROUP);

		eventgrouptypeEClass = createEClass(EVENTGROUPTYPE);
		createEAttribute(eventgrouptypeEClass, EVENTGROUPTYPE__SHORTNAME);
		createEAttribute(eventgrouptypeEClass, EVENTGROUPTYPE__EVENTGROUPID);
		createEReference(eventgrouptypeEClass, EVENTGROUPTYPE__EVENTS);

		eventstypeEClass = createEClass(EVENTSTYPE);
		createEReference(eventstypeEClass, EVENTSTYPE__EVENT);

		eventtypeEClass = createEClass(EVENTTYPE);
		createEAttribute(eventtypeEClass, EVENTTYPE__SHORTNAME);
		createEAttribute(eventtypeEClass, EVENTTYPE__EVENTID);
		createEReference(eventtypeEClass, EVENTTYPE__DATAELEMENTS);

		someipserviceinstancetypeEClass = createEClass(SOMEIPSERVICEINSTANCETYPE);
		createEAttribute(someipserviceinstancetypeEClass, SOMEIPSERVICEINSTANCETYPE__SHORTNAME);
		createEAttribute(someipserviceinstancetypeEClass, SOMEIPSERVICEINSTANCETYPE__CATEGORY);
		createEAttribute(someipserviceinstancetypeEClass, SOMEIPSERVICEINSTANCETYPE__DESC);
		createEAttribute(someipserviceinstancetypeEClass, SOMEIPSERVICEINSTANCETYPE__SERVICEID);
		createEAttribute(someipserviceinstancetypeEClass, SOMEIPSERVICEINSTANCETYPE__INSTANCEID);
		createEAttribute(someipserviceinstancetypeEClass, SOMEIPSERVICEINSTANCETYPE__PROTOCOLVERSION);
		createEAttribute(someipserviceinstancetypeEClass, SOMEIPSERVICEINSTANCETYPE__INTERFACEVERSION);
		createEAttribute(someipserviceinstancetypeEClass, SOMEIPSERVICEINSTANCETYPE__SERVICEINTERFACETYPE);
		createEReference(someipserviceinstancetypeEClass, SOMEIPSERVICEINSTANCETYPE__EVENTGROUPS);
		createEAttribute(someipserviceinstancetypeEClass, SOMEIPSERVICEINSTANCETYPE__ECUCQUERY);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private boolean isInitialized = false;

	/**
	 * Complete the initialization of the package and its meta-model.  This
	 * method is guarded to have no affect on any invocation but its first.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void initializePackageContents() {
		if (isInitialized) return;
		isInitialized = true;

		// Initialize package
		setName(eNAME);
		setNsPrefix(eNS_PREFIX);
		setNsURI(eNS_URI);

		// Obtain other dependent packages
		XMLTypePackage theXMLTypePackage = (XMLTypePackage)EPackage.Registry.INSTANCE.getEPackage(XMLTypePackage.eNS_URI);

		// Create type parameters

		// Set bounds for type parameters

		// Add supertypes to classes

		// Initialize classes, features, and operations; add parameters
		initEClass(dataelementstypeEClass, org.autosar.schema.r4.DATAELEMENTSTYPE.class, "DATAELEMENTSTYPE", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getDATAELEMENTSTYPE_DATAELEMENT(), this.getDATAELEMENTTYPE(), null, "dATAELEMENT", null, 0, -1, org.autosar.schema.r4.DATAELEMENTSTYPE.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(dataelementtypeEClass, org.autosar.schema.r4.DATAELEMENTTYPE.class, "DATAELEMENTTYPE", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getDATAELEMENTTYPE_SHORTNAME(), theXMLTypePackage.getString(), "sHORTNAME", null, 1, 1, org.autosar.schema.r4.DATAELEMENTTYPE.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getDATAELEMENTTYPE_DATAID(), theXMLTypePackage.getInt(), "dATAID", null, 1, 1, org.autosar.schema.r4.DATAELEMENTTYPE.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getDATAELEMENTTYPE_DATATYPE(), theXMLTypePackage.getString(), "dATATYPE", null, 1, 1, org.autosar.schema.r4.DATAELEMENTTYPE.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(eventgroupstypeEClass, org.autosar.schema.r4.EVENTGROUPSTYPE.class, "EVENTGROUPSTYPE", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getEVENTGROUPSTYPE_EVENTGROUP(), this.getEVENTGROUPTYPE(), null, "eVENTGROUP", null, 0, -1, org.autosar.schema.r4.EVENTGROUPSTYPE.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(eventgrouptypeEClass, org.autosar.schema.r4.EVENTGROUPTYPE.class, "EVENTGROUPTYPE", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getEVENTGROUPTYPE_SHORTNAME(), theXMLTypePackage.getString(), "sHORTNAME", null, 1, 1, org.autosar.schema.r4.EVENTGROUPTYPE.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getEVENTGROUPTYPE_EVENTGROUPID(), theXMLTypePackage.getInt(), "eVENTGROUPID", null, 1, 1, org.autosar.schema.r4.EVENTGROUPTYPE.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getEVENTGROUPTYPE_EVENTS(), this.getEVENTSTYPE(), null, "eVENTS", null, 0, 1, org.autosar.schema.r4.EVENTGROUPTYPE.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(eventstypeEClass, org.autosar.schema.r4.EVENTSTYPE.class, "EVENTSTYPE", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getEVENTSTYPE_EVENT(), this.getEVENTTYPE(), null, "eVENT", null, 0, -1, org.autosar.schema.r4.EVENTSTYPE.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(eventtypeEClass, org.autosar.schema.r4.EVENTTYPE.class, "EVENTTYPE", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getEVENTTYPE_SHORTNAME(), theXMLTypePackage.getString(), "sHORTNAME", null, 1, 1, org.autosar.schema.r4.EVENTTYPE.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getEVENTTYPE_EVENTID(), theXMLTypePackage.getInt(), "eVENTID", null, 1, 1, org.autosar.schema.r4.EVENTTYPE.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getEVENTTYPE_DATAELEMENTS(), this.getDATAELEMENTSTYPE(), null, "dATAELEMENTS", null, 0, 1, org.autosar.schema.r4.EVENTTYPE.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(someipserviceinstancetypeEClass, org.autosar.schema.r4.SOMEIPSERVICEINSTANCETYPE.class, "SOMEIPSERVICEINSTANCETYPE", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getSOMEIPSERVICEINSTANCETYPE_SHORTNAME(), theXMLTypePackage.getString(), "sHORTNAME", null, 1, 1, org.autosar.schema.r4.SOMEIPSERVICEINSTANCETYPE.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getSOMEIPSERVICEINSTANCETYPE_CATEGORY(), theXMLTypePackage.getString(), "cATEGORY", null, 0, 1, org.autosar.schema.r4.SOMEIPSERVICEINSTANCETYPE.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getSOMEIPSERVICEINSTANCETYPE_DESC(), theXMLTypePackage.getString(), "dESC", null, 0, 1, org.autosar.schema.r4.SOMEIPSERVICEINSTANCETYPE.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getSOMEIPSERVICEINSTANCETYPE_SERVICEID(), theXMLTypePackage.getInt(), "sERVICEID", null, 1, 1, org.autosar.schema.r4.SOMEIPSERVICEINSTANCETYPE.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getSOMEIPSERVICEINSTANCETYPE_INSTANCEID(), theXMLTypePackage.getInt(), "iNSTANCEID", null, 1, 1, org.autosar.schema.r4.SOMEIPSERVICEINSTANCETYPE.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getSOMEIPSERVICEINSTANCETYPE_PROTOCOLVERSION(), theXMLTypePackage.getInt(), "pROTOCOLVERSION", null, 0, 1, org.autosar.schema.r4.SOMEIPSERVICEINSTANCETYPE.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getSOMEIPSERVICEINSTANCETYPE_INTERFACEVERSION(), theXMLTypePackage.getInt(), "iNTERFACEVERSION", null, 0, 1, org.autosar.schema.r4.SOMEIPSERVICEINSTANCETYPE.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getSOMEIPSERVICEINSTANCETYPE_SERVICEINTERFACETYPE(), theXMLTypePackage.getString(), "sERVICEINTERFACETYPE", null, 0, 1, org.autosar.schema.r4.SOMEIPSERVICEINSTANCETYPE.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getSOMEIPSERVICEINSTANCETYPE_EVENTGROUPS(), this.getEVENTGROUPSTYPE(), null, "eVENTGROUPS", null, 0, 1, org.autosar.schema.r4.SOMEIPSERVICEINSTANCETYPE.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getSOMEIPSERVICEINSTANCETYPE_ECUCQUERY(), theXMLTypePackage.getString(), "eCUCQUERY", null, 0, -1, org.autosar.schema.r4.SOMEIPSERVICEINSTANCETYPE.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		// Create resource
		createResource(eNS_URI);

		// Create annotations
		// http:///org/eclipse/emf/ecore/util/ExtendedMetaData
		createExtendedMetaDataAnnotations();
	}

	/**
	 * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected void createExtendedMetaDataAnnotations() {
		String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData";
		addAnnotation
		  (dataelementstypeEClass,
		   source,
		   new String[] {
			   "name", "DATA-ELEMENTS-TYPE",
			   "kind", "elementOnly"
		   });
		addAnnotation
		  (getDATAELEMENTSTYPE_DATAELEMENT(),
		   source,
		   new String[] {
			   "kind", "element",
			   "name", "DATA-ELEMENT",
			   "namespace", "##targetNamespace"
		   });
		addAnnotation
		  (dataelementtypeEClass,
		   source,
		   new String[] {
			   "name", "DATA-ELEMENT-TYPE",
			   "kind", "elementOnly"
		   });
		addAnnotation
		  (getDATAELEMENTTYPE_SHORTNAME(),
		   source,
		   new String[] {
			   "kind", "element",
			   "name", "SHORT-NAME",
			   "namespace", "##targetNamespace"
		   });
		addAnnotation
		  (getDATAELEMENTTYPE_DATAID(),
		   source,
		   new String[] {
			   "kind", "element",
			   "name", "DATA-ID",
			   "namespace", "##targetNamespace"
		   });
		addAnnotation
		  (getDATAELEMENTTYPE_DATATYPE(),
		   source,
		   new String[] {
			   "kind", "element",
			   "name", "DATA-TYPE",
			   "namespace", "##targetNamespace"
		   });
		addAnnotation
		  (eventgroupstypeEClass,
		   source,
		   new String[] {
			   "name", "EVENT-GROUPS-TYPE",
			   "kind", "elementOnly"
		   });
		addAnnotation
		  (getEVENTGROUPSTYPE_EVENTGROUP(),
		   source,
		   new String[] {
			   "kind", "element",
			   "name", "EVENT-GROUP",
			   "namespace", "##targetNamespace"
		   });
		addAnnotation
		  (eventgrouptypeEClass,
		   source,
		   new String[] {
			   "name", "EVENT-GROUP-TYPE",
			   "kind", "elementOnly"
		   });
		addAnnotation
		  (getEVENTGROUPTYPE_SHORTNAME(),
		   source,
		   new String[] {
			   "kind", "element",
			   "name", "SHORT-NAME",
			   "namespace", "##targetNamespace"
		   });
		addAnnotation
		  (getEVENTGROUPTYPE_EVENTGROUPID(),
		   source,
		   new String[] {
			   "kind", "element",
			   "name", "EVENT-GROUP-ID",
			   "namespace", "##targetNamespace"
		   });
		addAnnotation
		  (getEVENTGROUPTYPE_EVENTS(),
		   source,
		   new String[] {
			   "kind", "element",
			   "name", "EVENTS",
			   "namespace", "##targetNamespace"
		   });
		addAnnotation
		  (eventstypeEClass,
		   source,
		   new String[] {
			   "name", "EVENTS-TYPE",
			   "kind", "elementOnly"
		   });
		addAnnotation
		  (getEVENTSTYPE_EVENT(),
		   source,
		   new String[] {
			   "kind", "element",
			   "name", "EVENT",
			   "namespace", "##targetNamespace"
		   });
		addAnnotation
		  (eventtypeEClass,
		   source,
		   new String[] {
			   "name", "EVENT-TYPE",
			   "kind", "elementOnly"
		   });
		addAnnotation
		  (getEVENTTYPE_SHORTNAME(),
		   source,
		   new String[] {
			   "kind", "element",
			   "name", "SHORT-NAME",
			   "namespace", "##targetNamespace"
		   });
		addAnnotation
		  (getEVENTTYPE_EVENTID(),
		   source,
		   new String[] {
			   "kind", "element",
			   "name", "EVENT-ID",
			   "namespace", "##targetNamespace"
		   });
		addAnnotation
		  (getEVENTTYPE_DATAELEMENTS(),
		   source,
		   new String[] {
			   "kind", "element",
			   "name", "DATA-ELEMENTS",
			   "namespace", "##targetNamespace"
		   });
		addAnnotation
		  (someipserviceinstancetypeEClass,
		   source,
		   new String[] {
			   "name", "SOMEIP-SERVICE-INSTANCE-TYPE",
			   "kind", "elementOnly"
		   });
		addAnnotation
		  (getSOMEIPSERVICEINSTANCETYPE_SHORTNAME(),
		   source,
		   new String[] {
			   "kind", "element",
			   "name", "SHORT-NAME",
			   "namespace", "##targetNamespace"
		   });
		addAnnotation
		  (getSOMEIPSERVICEINSTANCETYPE_CATEGORY(),
		   source,
		   new String[] {
			   "kind", "element",
			   "name", "CATEGORY",
			   "namespace", "##targetNamespace"
		   });
		addAnnotation
		  (getSOMEIPSERVICEINSTANCETYPE_DESC(),
		   source,
		   new String[] {
			   "kind", "element",
			   "name", "DESC",
			   "namespace", "##targetNamespace"
		   });
		addAnnotation
		  (getSOMEIPSERVICEINSTANCETYPE_SERVICEID(),
		   source,
		   new String[] {
			   "kind", "element",
			   "name", "SERVICE-ID",
			   "namespace", "##targetNamespace"
		   });
		addAnnotation
		  (getSOMEIPSERVICEINSTANCETYPE_INSTANCEID(),
		   source,
		   new String[] {
			   "kind", "element",
			   "name", "INSTANCE-ID",
			   "namespace", "##targetNamespace"
		   });
		addAnnotation
		  (getSOMEIPSERVICEINSTANCETYPE_PROTOCOLVERSION(),
		   source,
		   new String[] {
			   "kind", "element",
			   "name", "PROTOCOL-VERSION",
			   "namespace", "##targetNamespace"
		   });
		addAnnotation
		  (getSOMEIPSERVICEINSTANCETYPE_INTERFACEVERSION(),
		   source,
		   new String[] {
			   "kind", "element",
			   "name", "INTERFACE-VERSION",
			   "namespace", "##targetNamespace"
		   });
		addAnnotation
		  (getSOMEIPSERVICEINSTANCETYPE_SERVICEINTERFACETYPE(),
		   source,
		   new String[] {
			   "kind", "element",
			   "name", "SERVICE-INTERFACE-TYPE",
			   "namespace", "##targetNamespace"
		   });
		addAnnotation
		  (getSOMEIPSERVICEINSTANCETYPE_EVENTGROUPS(),
		   source,
		   new String[] {
			   "kind", "element",
			   "name", "EVENT-GROUPS",
			   "namespace", "##targetNamespace"
		   });
		addAnnotation
		  (getSOMEIPSERVICEINSTANCETYPE_ECUCQUERY(),
		   source,
		   new String[] {
			   "kind", "element",
			   "name", "ECUC-QUERY",
			   "namespace", "##targetNamespace"
		   });
	}

} //R4PackageImpl
